1. Field of the Invention
The invention relates to memory systems used in computers, and more particularly, to automatically determining the maximum usable memory size.
2. Discussion of the Prior Art
The number of areas where personal computers are being utilized is growing dramatically. The areas are varied, and as a result, have different requirements for the various subsystems forming a complete computer system. For example, personal computers used primarily for word processing have relatively modest requirements for installed memory and processor subsystems, have very high performance requirements for the mass storage subsystem and have varying requirements for the display subsystem, depending on the exact application, such as high resolution desktop publishing or simpler letter production, being performed. A data storage and retrieval oriented system needs larger amounts of memory, a faster processor, may have lesser mass storage requirements and generally has minimal display requirements. Complex spreadsheet applications require very large amounts of memory, high performance processors, average capability mass storage subsystems and have display requirements which vary depending on whether complex graphic presentations are desired. Simple spreadsheet applications need standard amounts of memory, average performance processors, average capability mass storage subsystems and have the same display requirements as complex spreadsheet applications. Computer automated design systems require large amounts of memory, very high performance processors, high performance mass storage systems and very high performance display components.
Because of production volume requirements and the reduced costs as volumes increase, it is desirable that as many common features as possible are combined into high volume units. This has happened in the personal computer area by developing basic units of varying processor performance levels, with the other subsystems incorporated by the inclusion of interchangeable modules. Modules of the desired performance level are incorporated into the basic unit to tailor the basic processor unit to the desired complete computer system. Because of the inherent flexibility of this design approach, it becomes difficult to develop a single piece of software to control the system. The software cannot depend on a given configuration being present and so arrangements must be made to allow the software to understand the specific configuration. Additionally, the provisions must be made so the various modules forming the subsystems do not interfere with each other.
The software and hardware configuration problems are quite true in memory subsystems where it is common for the subsystem to be originally installed by a system integrator at one level and then changed by a relatively unskilled user. The change is performed by adding memory integrated circuits, either into previously available locations in a preexisting module, or changing the number or type of incorporated memory modules. This situation is further complicated because personal computers related to or compatible with products produced by International Business Machines Corporation have undergone a very complicated memory expansion path because of limitations in the various processors, operating systems, and designs which have developed over the years. As a result, various competing systems and memory allocation conflicts have developed, so that determining and setting memory size and location is extremely difficult.
Conventionally, indication of memory size and location is performed by appropriately setting switches or jumpers provided by the manufacturer of the memory subsystem. This has required that the person installing or upgrading the memory subsystem have a good knowledge of the environment, that is, the intended size of the memory components and location where they are to be located, both physically and in the address space of the computer, and where any other existing memory subsystem components are located. This knowledge requirement either makes the installation very difficult for the unskilled owner or requires installation by a skilled person, usually at a relatively large expense. The unskilled owner must try and follow the often difficult to interpret instructions and hope to get everything right. If not, the owner must try again, thereby expending valuable time. After a sufficient number of unsuccessful attempts, the unskilled owner generally contacts a skilled individual for assistance. Thus, much time and effort is expended with minimal results.
It is desirable that the memory size and address location be determined automatically and that any determined errors be indicated to the installer, to allow a minimum of time and effort to be expended when installing or modifying a memory subsystem. Additionally, it is desirable that portions of a given memory module can be temporarily disabled by software so special modules which must reside only at given locations can be incorporated into and utilized by the computer system without having to repeatedly remove a module and alter various switches or jumpers.